#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int call_t3des_enc(char *acno, char *pin, char *key, char *EnPin)
{
   int iRet;
   int iLen;
   char aczFileName[256];
   char aczActBlk[9];
   char aczAZpk[33]="11111111111111110000000000000000";
   char aczHZpk[17];
   char aczNxyHPin[9];
   char aczNxyAPin[17];
   char aczGtPin[9]="111111";
   char aczCardNo[31]="0000000000000000000";


   memset( aczGtPin, 0x00, sizeof( aczGtPin ) );
   memset( aczCardNo, 0x00, sizeof( aczCardNo) );
   memset( aczActBlk, 0x00, sizeof( aczActBlk ) );
   memset( aczNxyHPin, 0x00, sizeof( aczNxyHPin ) );
   memset( aczNxyAPin, 0x00, sizeof( aczNxyAPin ) );
   memset( aczFileName , 0x00, sizeof( aczFileName ) );
   memset( aczHZpk, 0x00, sizeof( aczHZpk) );
   memset( aczActBlk , 0x00, sizeof( aczActBlk ) );


   memcpy(aczCardNo,acno,strlen(acno));
   memcpy(aczGtPin,pin,strlen(pin));
   memcpy(aczAZpk,key,strlen(key));

   Chg_Asc_To_Hex( aczAZpk, 16, aczHZpk);
   get_nxyactblk(aczCardNo , aczActBlk);

   //printf( "PAN=[%02x%02x%02x%02x%02x%02x%02x%02x]\n",  aczActBlk[0],aczActBlk[1],aczActBlk[2],aczActBlk[3],aczActBlk[4],aczActBlk[5],aczActBlk[6],aczActBlk[7]);
   iRet = NxyEncPin( aczActBlk ,  aczHZpk , aczGtPin , aczNxyHPin );
   if( iRet < 0 )
   {
      printf( "与加密加解密失败!errno=[%d][%s]", iRet, aczNxyHPin );
      return -1;
   }
   printf("\n");
   //printf("%s\n",aczNxyHPin);
   Chg_Hex_To_Asc( aczNxyHPin, 8, aczNxyAPin);
   //printf("%s\n",aczNxyAPin);
   memcpy(EnPin,aczNxyAPin,strlen(aczNxyAPin));
   return 0;
}

int call_t3des_dec(char *acno, char *wypin, char *key, char *gtPin)
{
   int iRet;
   int iLen;
   char aczFileName[256];
   char aczActBlk[9];
   char aczAZpk[33]="11111111111111110000000000000000";
   char aczHZpk[17];
   char aczNxyHPin[9];
   char aczNxyAPin[17];
   char aczGtPin[9]="111111";
   char aczCardNo[31]="0000000000000000000";


   memset( aczGtPin, 0x00, sizeof( aczGtPin ) );
   memset( aczCardNo, 0x00, sizeof( aczCardNo) );
   memset( aczActBlk, 0x00, sizeof( aczActBlk ) );
   memset( aczNxyHPin, 0x00, sizeof( aczNxyHPin ) );
   memset( aczNxyAPin, 0x00, sizeof( aczNxyAPin ) );
   memset( aczFileName , 0x00, sizeof( aczFileName ) );
   memset( aczHZpk, 0x00, sizeof( aczHZpk) );
   memset( aczActBlk , 0x00, sizeof( aczActBlk ) );

   memcpy(aczCardNo,acno,strlen(acno));
   memcpy(aczNxyAPin,wypin,strlen(wypin));
   memcpy(aczAZpk,key,strlen(key));

   Chg_Asc_To_Hex( aczAZpk, 16, aczHZpk);
   Chg_Asc_To_Hex( aczNxyAPin, 16,aczNxyHPin );

   get_nxyactblk(aczCardNo , aczActBlk);

   //printf( "PAN=[%02x%02x%02x%02x%02x%02x%02x%02x]\n",  aczActBlk[0],aczActBlk[1],aczActBlk[2],aczActBlk[3],aczActBlk[4],aczActBlk[5],aczActBlk[6],aczActBlk[7]);
   iRet = _NxyEncPin( aczActBlk ,  aczHZpk , aczNxyHPin , aczGtPin );
   if( iRet < 0 )
   {
      printf( "与加密加解密失败!errno=[%d][%s]", iRet, aczNxyHPin );
      return -1;
   }
   printf("\n");
   //printf("%s\n",aczGtPin);
   //Chg_Hex_To_Asc( aczGtPin, 8, aczNxyAPin);
   //printf("%s\n",aczNxyAPin);
   memcpy(gtPin,aczGtPin,strlen(aczGtPin));
   return 0;
}
